package com.zs.propertymanage.service.impl;

import com.zs.propertymanage.dataObj.R;
import com.zs.propertymanage.dataObj.entity.Tenant;

public interface TenantService {

    /**
     * 获取所有未经处理的租户信息
     *
     * @return 所有未经处理的租户信息
     */
    R getAllTenantWithPlain();

    /**
     * 根据条件获取所有租户
     *
     * @param search      搜索内容
     * @param currentPage 当前页码
     * @param pageSize    每页数量
     * @return 所有符合条件的租户
     */
    R getAllTenantWithCondition(String search, Integer currentPage, Integer pageSize);

    /**
     * 添加租户
     *
     * @param tenant 租户对象
     * @return 添加的租户
     */
    R addTenant(Tenant tenant);

    /**
     * 更新租户
     *
     * @param tenant 租户对象
     * @return 更新的租户
     */
    R updateTenant(Tenant tenant);

    /**
     * 根据ID删除租户
     *
     * @param id 租户ID
     * @return 删除的租户
     */
    R deleteTenantById(String id);

    /**
     * 获取租户统计信息
     *
     * @param tenantId 租户ID
     * @return 租户统计信息
     */
    R getTenantStat(String tenantId);

    /**
     * 根据租户ID获取房屋
     *
     * @param id          租户ID
     * @param search      搜索内容
     * @param currentPage 当前页码
     * @param pageSize    每页数量
     * @return 所有符合条件的房屋
     */
    R getHouseByTenantId(String id, String search, Integer currentPage, Integer pageSize);

    /**
     * 获取可租房屋
     *
     * @param search      搜索内容
     * @param currentPage 当前页码
     * @param pageSize    每页数量
     * @return 所有符合条件的可租房屋
     */
    R getRentableHouse(String search, Integer currentPage, Integer pageSize);

    /**
     * 租房
     *
     * @param tenantId 租户ID
     * @param houseId  房屋ID
     */
    R rentHouse(String tenantId, String houseId);

    /**
     * 解除租房
     *
     * @param houseId 房屋ID
     */
    R stopRent(String houseId);

    /**
     * 更新房屋状态
     *
     * @param houseId  房屋ID
     * @param statusId 状态ID
     * @return 更新后的房屋状态
     */
    R updateHouseStatus(String houseId, Integer statusId);

    /**
     * 根据租户ID获取工作订单
     *
     * @param id          租户ID
     * @param search      搜索内容
     * @param currentPage 当前页码
     * @param pageSize    每页数量
     * @return 所有符合条件的工作订单
     */
    R getWorkOrderByTenantId(String id, String search, Integer currentPage, Integer pageSize);

    /**
     * 根据租户ID获取所有房屋
     *
     * @param tenantId 租户ID
     * @return 所有租户的房屋
     */
    R getAllHouseByTenantId(String tenantId);

    /**
     * 获取工作订单类别
     *
     * @return 工作订单类别
     */
//    R getWorkOrderCategory();

    /**
     * 创建工作订单
     *
     * @param tenantId            租户ID
     * @param houseId             房屋ID
     * @param workOrderCategoryId 工作订单类别ID
     * @param orderRemark         订单备注
     * @return 创建的工作订单
     */
    R createWorkOrder(String tenantId, Integer houseId, Integer workOrderCategoryId, String orderRemark);

    // 根据id获取租户
    R getTenantById(String id);
}
